package com.tiger.project.domain;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.tiger.common.annotation.Excel;
import com.tiger.common.core.domain.BaseEntity;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;


/**
 * 【请填写功能名称】对象 contract
 *
 * @author standard
 * @date 2022-09-19
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "contract对象", description = "【合同申请】内容")
public class Contract extends BaseEntity {
private static final long serialVersionUID = 1L;

        /** ID */
        private Long id;

        /** 合同编号 */
        @Excel(name = "合同编号")
        @ApiModelProperty(value = "合同编号")
        private String contractNo;

        /** 工程名称 */
        @Excel(name = "工程名称")
        @ApiModelProperty(value = "工程名称")
        private String name;

        /** 1-项目维修，2-项目抢修，3-项目建设（非标准） */
        @Excel(name = "1-项目维修，2-项目抢修，3-项目建设", readConverterExp = "非=标准")
        @ApiModelProperty(value = "1-项目维修，2-项目抢修，3-项目建设")
        private String type;

        /** 关联项目申请id */
        @Excel(name = "关联项目申请id")
        @ApiModelProperty(value = "关联项目申请id")
        private Long applyId;

        /** 合同开始时间 */
        @JsonFormat(pattern = "yyyy-MM-dd")
        @Excel(name = "合同开始时间", width = 30, dateFormat = "yyyy-MM-dd")
        @ApiModelProperty(value = "合同开始时间")
        private Date startAt;

        /** 合同结束时间 */
        @JsonFormat(pattern = "yyyy-MM-dd")
        @Excel(name = "合同结束时间", width = 30, dateFormat = "yyyy-MM-dd")
        @ApiModelProperty(value = "合同结束时间")
        private Date endAt;

        /** 合同总金额 */
        @Excel(name = "合同总金额")
        @ApiModelProperty(value = "合同总金额")
        private BigDecimal totalAmount;

        /** 1-未提交，2-审批中，3-审批通过，4-已驳回 */
        @Excel(name = "1-未提交，2-审批中，3-审批通过，4-已驳回")
        @ApiModelProperty(value = "1-未提交，2-审批中，3-审批通过，4-已驳回")
        private Long status;

        /** 甲方id */
        @Excel(name = "甲方id")
        @ApiModelProperty(value = "甲方id")
        private Long firstPartyId;

        /** 甲方法定代表人姓名 */
        @Excel(name = "甲方法定代表人姓名")
        @ApiModelProperty(value = "甲方法定代表人姓名")
        private String firstLegalRepresentative;

        /** 甲方姓名 */
        @Excel(name = "甲方姓名")
        @ApiModelProperty(value = "甲方姓名")
        private String firstPartyName;

        /** 甲方营业执照代码 */
        @Excel(name = "甲方营业执照代码")
        @ApiModelProperty(value = "甲方营业执照代码")
        private String firstLicenseCode;

        /** 甲方地址 */
        @Excel(name = "甲方地址")
        @ApiModelProperty(value = "甲方地址")
        private String firstAddress;

        /** 甲方指派 */
        @Excel(name = "甲方指派")
        @ApiModelProperty(value = "甲方指派")
        private String firstDesignatedPerson;

        /** 甲方指派联系电话 */
        @Excel(name = "甲方指派联系电话")
        @ApiModelProperty(value = "甲方指派联系电话")
        private String firstFirstDesignatedPhone;

        /** 乙方id */
        @Excel(name = "乙方id")
        @ApiModelProperty(value = "乙方id")
        private Long secondPartyId;

        /** 乙方姓名 */
        @Excel(name = "乙方姓名")
        @ApiModelProperty(value = "乙方姓名")
        private String secondPartyName;

        /** 乙方法定代表人姓名 */
        @Excel(name = "乙方法定代表人姓名")
        @ApiModelProperty(value = "乙方法定代表人姓名")
        private String secondLegalRepresentative;

        /** 乙方营业执照代码 */
        @Excel(name = "乙方营业执照代码")
        @ApiModelProperty(value = "乙方营业执照代码")
        private String secondLicenseCode;

        /** 乙方地址 */
        @Excel(name = "乙方地址")
        @ApiModelProperty(value = "乙方地址")
        private String secondAddress;

        /** 乙方指派 */
        @Excel(name = "乙方指派")
        @ApiModelProperty(value = "乙方指派")
        private String secondDesignatedPerson;

        /** 乙方指派联系电话 */
        @Excel(name = "乙方指派联系电话")
        @ApiModelProperty(value = "乙方指派联系电话")
        private String secondDesignatedPhone;

        /** 工程地点 */
        @Excel(name = "工程地点")
        @ApiModelProperty(value = "工程地点")
        private String address;

        /** 合同工期 */
        @Excel(name = "合同工期")
        @ApiModelProperty(value = "合同工期")
        private Long duration;

        /** 质保期 */
        @Excel(name = "质保期")
        @ApiModelProperty(value = "质保期")
        private String warrantyPeriod;

        /** 工程范围 */
        @Excel(name = "工程范围")
        @ApiModelProperty(value = "工程范围")
        private String workScope;

        /** 删除标志  1-是，0-否 */
        @Excel(name = "删除标志  1-是，0-否")
        @ApiModelProperty(value = "删除标志  1-是，0-否")
        private Long isDeleted;

        /** 创建时间 */
        @JsonFormat(pattern = "yyyy-MM-dd")
        @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
        @ApiModelProperty(value = "创建时间")
        private Date createdAt;

        /** 更新时间 */
        @JsonFormat(pattern = "yyyy-MM-dd")
        @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
        @ApiModelProperty(value = "更新时间")
        private Date updatedAt;

        /** 决策依据id ,拼接 */
        @Excel(name = "决策依据id ,拼接")
        @ApiModelProperty(value = "决策依据id ,拼接")
        private String decisionBasisIds;

        /** 项目名称 */
        @Excel(name = "项目名称")
        @ApiModelProperty(value = "项目名称  审核通过后返回")
        private String applyName;

        /** 投保保证金 */
        @Excel(name = "投保保证金")
        @ApiModelProperty(value = "投保保证金")
        private BigDecimal bond;

        /** 户名 */
        @Excel(name = "户名")
        @ApiModelProperty(value = "户名")
        private String accountName;

        /** 开户行 */
        @Excel(name = "开户行")
        @ApiModelProperty(value = "开户行")
        private String depositBank;

        /** 账号 */
        @Excel(name = "账号")
        @ApiModelProperty(value = "账号")
        private String accountNumber;

        /** 创建人 */
        @Excel(name = "创建人")
        @ApiModelProperty(value = "创建人")
        private Long createById;

        /** 创建人名称 */
        @Excel(name = "创建人名称")
        @ApiModelProperty(value = "创建人名称")
        private String createByName;

        /** 更新人 */
        @Excel(name = "更新人")
        @ApiModelProperty(value = "更新人")
        private Long updateById;

        /** 更新人名称 */
        @Excel(name = "更新人名称")
        @ApiModelProperty(value = "更新人名称")
        private String updateByName;

        /** 租户id(0--平台用户 非0--正常租户) */
        @Excel(name = "租户id(0--平台用户 非0--正常租户)")
        @ApiModelProperty(value = "租户id(0--平台用户 非0--正常租户)")
        private Long tenantId;

        @ApiModelProperty(value = "公司id")
        private Long companyId;

        @ApiModelProperty(value = "1-升序 2-倒叙")
        private Long rank;

        @ApiModelProperty(value = "附件集合")
        private List<ContractEnclosure> enclosureList = new ArrayList<>();

        @ApiModelProperty(value = "决策依据")
        private List<CommonDecision> commonDecisionList = new ArrayList<>();

        @ApiModelProperty(value = "oa文件链接")
        private String oaFile;

        @ApiModelProperty(value = "OA的token")
        private String token;

        @ApiModelProperty(value = "OA的loginName")
        private String loginName;

}
